\chapter{Reconnaissance d'objets}
		\section{A partir d'images 2D}
Une première approche de la reconnaissance d'objets en trois dimensions est de se baser sur une bibliothèque d'images en deux dimensions. En effet, en considérant plusieurs vues d'un objet en deux dimensions, on peut espérer pouvoir en faire concorder une avec la vue 3D courante. Un des gros avantages du passage par une vue 2D est l'augmentation de la vitesse de calcul.
	\subsection{Génération des vues 2D}
Pour optimiser le processus de reconnaissance, on ne peut pas se baser juste sur une seule vue 2D de face de l'objet à reconna\^itre. En effet, il nous faut plusieurs (face, dos, c\^oté, dessus...) afin de prendre en compte les différentes situations possibles. Une méthode permettant une génération homogène des vues (géographiquement) est l'utilisation de projection dans un dodécaèdre (12 faces). Cette étape permet de "discrétiser" un objet 3D en plusieurs vues 2D (figure \ref{fig_lightfield}) \cite{bib_lightfield}.
\begin{figure}[h]
\centering
\includegraphics[width=10cm]{./images/lightfield.png}
\caption{Discrétisation d'image 3D selon le principe lightfield}
\label{fig_lightfield}
\end{figure}
\\
Dans cette méthode, on s'imagine prendre une photographie de l'objet centré dans le dodécaèdre en plaçant successivement la caméra sur chacune de ses faces. Afin d'améliorer les correspondances, on peut effectuer plusieurs fois cette opération en faisant tourner le dodécaèdre entre chaque prise de vues.
	\subsection{Appariement 2D/3D}
Une fois que les images 3D ont été rendus en 2D, une base de données est créée avec ces dernières. Ensuite, le travail de reconnaissance d'objets peut commencer. Pour cela, plusieurs algorithmes peuvent-\^etre utilisés. On se contentera seulement de les énumérer et de donner une bref description de ces derniers car ils ne représentent pas l'objet de cette recherche.
\subparagraph*{distance d'Hausdroff}: Cette méthode mesure l'écart de distance des pixels entre l'image binarisée de référence et l'image binarisée étudiée \cite{bib_hausdroff}.
\subparagraph*{Correspondance de formes}: Comme son nom l'indique, il s'agit de faire correspondre des formes entre elles. Les formes sont identifiés par des vecteurs qui sont ensuite comparés pour obtenir un score \cite{bib_formes}.
\subparagraph*{Correspondance de formes et ajustement par moindres carrées}: Cette méthode reprend le fonctionnement de la précédente mais ajoute un traitement sur les pixels du bord de la forme en faisant un calcul moindres carrées \cite{bib_formesmoindrecarrees}.
\subparagraph*{Transformée de Hough modifiée}: Cette méthode s'appuie sur la transformée de Hough généralisée dans laquelle on réduira l'espace de recherche afin de réduire le co\^ut calculatoire du processus \cite{bib_mht}.

	\section{Détection de caractéristiques}
Afin de faire concorder une vue 3D avec une image de référence, on peut utiliser un système de reconnaissance de points d'intérêts. Ces mécanismes se servent des variations géométriques de l'objet à reconnaître afin d'observer des similitudes. On retrouve plusieurs procédés.
		\subsection{Carte de profondeur}
Une première approche se base sur l'utilisation de machine à vecteurs de support (SVM). Cet algorithme est décrit comme une technique d'apprentissage supervisé. Dans leurs publications \cite{bib_SVM}, les auteurs se basent sur la variation de profondeur en partant du principe que la caméra est toujours à la m\^eme auteur du sol. L'algorithme sera alors le suivant :
\begin{itemize}
 \item Le capteur (laser, kinect...) effectue une prise de vue.
 \item Le nuage de points est ensuite divisé en "carreaux" sur l'axe des abscisses et ordonnées (l'information portée sera alors celle de la profondeur).
 \item Pour chaque "carreau", on recherche la profondeur maximale, minimale et moyenne (si on recoupe plusieurs mesures/capteurs, sinon la valeur est la m\^eme).
 \item Une carte de la profondeur est alors réalisée (fig. \ref{fig_depth_map}).
 \item La SVM se charge alors de trouver le modèle correspondant le plus fidèlement.
\end{itemize}
Comme on peut se douter, un des points délicats à gérer sera celui de la taille d'un carreau. Plus ils seront petits et plus on aura des informations détaillées. En contre-partie le temps de calcul se verra augmenter (ainsi que le bruit).\\
\textit{Note : la SVM ne sera pas étudié ici en détail puisque les algorithmes d'apprentissage seront traités par un autre étudiant.}

\begin{figure}
\centering
\includegraphics[width=10cm]{./images/depth_map.png}
\caption{Discrétisation d'une image selon la profondeur. A gauche l'image originale dans le repère étudié, à droite le résultat de l'opération (carte de profondeur)}
\label{fig_depth_map}
\end{figure}
\newpage
		\subsection{Utilisation de la profondeur, la normale et la courbe}
Lorsque nous possédons des informations tridimensionnelles sur une image, il n'est pas forcément pertinent de se limiter à l'exploitation unique de l'information de profondeur qu'apporte la troisième dimension. L'approche qui va \^etre décrite maintenant se base donc sur trois paramètres \cite{bib_3features} :
\begin{itemize}
\item La profondeur, qui est l'information la plus évidente fourni par la troisième dimensions.
\item La normale à la surface, qui est obtenu à partir de la dérivé de l'image. Elle est représentée par un vecteur et deux angles (fig. \ref{fig_normale}). Les angles sont calculés de la manière suivante :
\[ \phi = \arctan{\frac{n_z}{n_y}}, \theta = \arctan{\frac{\sqrt{n^2_y+n^2_z}}{n_x}} \]
\begin{figure}[h]
\centering
\includegraphics[width=5cm]{./images/normale.png}
\caption{Représentation d'un vecteur normale}
\label{fig_normale}
\end{figure}
\item La courbe de la surface qui représente la variation d'orientation des normales de la surface. Elle est calculée à partir de la première et la seconde dérivé.
\end{itemize}
Une fois que ces différentes caractéristiques sont calculées, elles sont compilées pour obtenir un histogramme (à plusieurs dimensions) des valeurs. On peut alors calculer la distribution des données pour obtenir un modèle de l'objet. Ensuite, il suffit de calculer le modèle empirique trouvé dynamiquement dans l'image étudiée avec les modèles théoriques stockés et définit auparavant pour trouver une correspondance (en utilisant des méthodes de reconnaissance d'histogramme ou de probabilité).

	\section{Approche géométrique}
Comme son nom l'indique, cette méthode se base sur des attributs géométriques des objets à reconnaître. Par conséquent, elle est bien indiquée pour des objets simples (bouteille, livre...) mais sera plus difficile à déployer pour des objets plus complexes (jouets, voiture...).\\
Dans cette approche, un objet est décrit comme un ensemble de paramètre, représenté par des vecteurs. Dans l'exemple fourni sur la figure \ref{fig_geo}, on se base sur la largeur et la longueur de la figure. Ces valeurs sont ensuite reportées sur un graphique possédant autant de dimensions que de caractéristiques étudié (ici deux).\\
\begin{figure}[h]
\centering
\includegraphics[width=10cm]{./images/geometrique_vecteurs.png}
\caption{Identification de vecteurs d'une figure (ici longueur et largeur}
\label{fig_geo}
\end{figure}

Afin d'effectuer une classification et obtenir des régions d'intérêt, une phase d'apprentissage est faite pour créer un nuage de point pour chaque type d'objet comme montré sur la figure \ref{fig_geo_nuage}. On peut alors déterminer des classes d'objets en observant les différentes densités de points.\\
Une fois que les différentes zones sont mises en évidence, il faut réussir à discriminer les zones entre elles pour faire ressortir les classes d'objets. Enfin, lorsque l'objet à déterminer a été réduit à un ensemble de vecteur, une étude probabiliste permet de déterminer l'appartenance de l'objet à une classe. Comme on peut se douter, plus le nombre de classe est élevé et proche les une des autres et plus la décision d'appartenance sera délicate à faire.
\begin{figure}[h]
\centering
\includegraphics[width=10cm]{./images/geometrique_classe.png}
\caption{Nuage de points représentant les classes d'objets selon leurs caractéristiques. A gauche les classes sont sans ambiguïté, à droite les classes sont plus dur à isoler.}
\label{fig_geo_nuage}
\end{figure}

	\section{Utilisation de caractéristiques clés}
Une dernière approche retenue est celle proposée par L. Desmecht et M. Rémon \cite{bib_carac_cle}, s'appuyant sur des caractéristiques clés au sein d'une image 3D.\\
Ce procédé s'appuie sur la sémantique pour décrire un objet. Ainsi, en prenant l'exemple d'une voiture on pourrait décrire l'objet de la manière suivante :
\begin{itemize}
\item L'objet a des roues
\item L'objet a des vitres
\item L'objet a une carrosserie
\end{itemize}
Ce concept permet de donner des poids aux différentes caractéristiques, afin de les hiérarchiser au sein de la détection. Par exemple, dans la figure \ref{fig_voiture}, le contraste du trait indique l'importance de la caractéristique. On voit ainsi dans cet exemple que la caractéristique "roue" est plus importante que la caractéristique "carrosserie".\\
Afin de bien isoler les différentes caractéristiques, un traitement particulier doit-\^etre apporté à la détection de contour pour qu'elle soit le plus efficace possible (\cite{bib_canny}).
\begin{figure}[h]
\centering
\includegraphics[width=5cm]{./images/voiture.png}
\caption{Représentation des caractéristiques clés sur un exemple : une voiture. L'intensité du trait représente l'importance de la caractéristique.}
\label{fig_voiture}
\end{figure}